/*!
 * @file modeConsole.hh
 * @brief Konsola
 */

#ifndef __MODES_CONSOLE_MODECONSOLE_HH
#define __MODES_CONSOLE_MODECONSOLE_HH

#include <iostream>
#include <utility>
#include <string>
#include <fstream>
#include <list>

#include "engine/modeBase.hh"

/*!
 * @brief Konsola
 */
class modeConsole: public modeBase {
public:
	/*!
	 * @brief Konstruktor z listą inicjalizacyjną dla modeBase
	 * @return Obiekt
	 */
	modeConsole();

	/*!
	 * @brief Dokonywanie zrzutu zawartości okna konsoli do pliku
	 * @return -
	 */
	~modeConsole();

	/*Interfejs modeBase*/
	void render2d();
	void render3d();
	void calculate();
	void input();
	void init();

	/*!
	 * @brief Strumień konsoli
	 */
	std::stringstream consoleStream;

private:
	/*!
	 * @brief Obecnie wprowadzona fraza
	 */
	std::string currentInput;

	/*!
	 * @brief Zawartość okna konsoli
	 */
	std::string consoleContent;

	/*!
	 * @brief Liczba linii z początku do zignorowania
	 */
	int linesToIgnore;

	/*-----------------------------------------------------------------*/
};

#else
class modeConsole;
#endif
